<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>深入理解 Nginx 进程模型</title>
    <link href="https://cdn.staticfile.org/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
    <link href="https://cdn.staticfile.org/tailwindcss/2.2.19/tailwind.min.css" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;500;600;700&family=Noto+Sans+SC:wght@300;400;500;700&display=swap" rel="stylesheet">
    <script src="https://cdn.jsdelivr.net/npm/mermaid@latest/dist/mermaid.min.js"></script>
    <style>
        body {
            font-family: 'Noto Sans SC', Tahoma, Arial, Roboto, "Droid Sans", "Helvetica Neue", "Droid Sans Fallback", "Heiti SC", "Hiragino Sans GB", Simsun, sans-serif;
            background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
            min-height: 100vh;
        }
        
        .hero-gradient {
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
        }
        
        .content-card {
            background: rgba(255, 255, 255, 0.95);
            backdrop-filter: blur(10px);
            box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
            transition: transform 0.3s ease, box-shadow 0.3s ease;
        }
        
        .content-card:hover {
            transform: translateY(-5px);
            box-shadow: 0 25px 50px rgba(0, 0, 0, 0.15);
        }
        
        .section-title {
            position: relative;
            padding-left: 20px;
        }
        
        .section-title::before {
            content: '';
            position: absolute;
            left: 0;
            top: 50%;
            transform: translateY(-50%);
            width: 4px;
            height: 24px;
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            border-radius: 2px;
        }
        
        .feature-icon {
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
        }
        
        .code-block {
            background: #1e293b;
            color: #e2e8f0;
            border-radius: 8px;
            padding: 20px;
            overflow-x: auto;
            font-family: 'Consolas', 'Monaco', monospace;
            box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);
        }
        
        .mermaid {
            display: flex;
            justify-content: center;
            margin: 30px 0;
        }
        
        .highlight-box {
            background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
            color: white;
            padding: 20px;
            border-radius: 12px;
            margin: 20px 0;
            box-shadow: 0 10px 30px rgba(245, 87, 108, 0.3);
        }
        
        .process-card {
            background: white;
            border-radius: 12px;
            padding: 24px;
            box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
            transition: all 0.3s ease;
            border: 2px solid transparent;
        }
        
        .process-card:hover {
            border-color: #667eea;
            transform: translateY(-5px);
            box-shadow: 0 15px 40px rgba(102, 126, 234, 0.2);
        }
        
        .floating-icon {
            animation: float 3s ease-in-out infinite;
        }
        
        @keyframes float {
            0%, 100% { transform: translateY(0px); }
            50% { transform: translateY(-10px); }
        }
        
        .gradient-text {
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
        }
        
        .list-item::before {
            content: '▸';
            color: #667eea;
            font-weight: bold;
            margin-right: 8px;
        }
    </style>
</head>
<body>
    <!-- Hero Section -->
    <div class="hero-gradient text-white py-20">
        <div class="container mx-auto px-6 text-center">
            <div class="floating-icon inline-block mb-6">
                <i class="fas fa-server text-6xl"></i>
            </div>
            <h1 class="text-5xl font-bold mb-4">深入理解 Nginx 进程模型</h1>
            <p class="text-xl opacity-90 max-w-3xl mx-auto">
                探索高性能 Web 服务器背后的核心机制，揭秘 Nginx 如何通过精妙的进程模型实现卓越的并发处理能力
            </p>
        </div>
    </div>

    <!-- Main Content -->
    <div class="container mx-auto px-6 py-12">
        <!-- Introduction -->
        <div class="content-card rounded-2xl p-8 mb-8">
            <p class="text-lg leading-relaxed text-gray-700 mb-6">
                当我们谈论 web 服务器时，Nginx 是一个不可避免的话题。它以其高性能、高并发能力和卓越的稳定性而闻名于世。然而，要理解 Nginx 的优越性，我们需要深入了解其背后的工作原理，其中之一就是 Nginx 的进程模型。
            </p>
            <div class="highlight-box">
                <i class="fas fa-lightbulb text-2xl mb-3"></i>
                <p class="text-lg">
                    Nginx 进程模型作为其卓越性能的关键组成部分，扮演着至关重要的角色。让我们先想象一下，当你在浏览网页或下载文件时，背后到底发生了什么？为什么有些网站能够迅速响应你的请求，而另一些则可能让你久等？
                </p>
            </div>
        </div>

        <!-- Process Model Visualization -->
        <div class="content-card rounded-2xl p-8 mb-8">
            <h2 class="section-title text-3xl font-bold mb-6 gradient-text">进程模型架构</h2>
            <div class="mermaid">
                graph TB
                    A[Master进程] -->|创建| B[Worker进程1]
                    A -->|创建| C[Worker进程2]
                    A -->|创建| D[Worker进程3]
                    A -->|创建| E[Worker进程N]
                    B -->|处理| F[客户端请求]
                    C -->|处理| G[客户端请求]
                    D -->|处理| H[客户端请求]
                    E -->|处理| I[客户端请求]
                    
                    style A fill:#667eea,stroke:#fff,stroke-width:3px,color:#fff
                    style B fill:#764ba2,stroke:#fff,stroke-width:2px,color:#fff
                    style C fill:#764ba2,stroke:#fff,stroke-width:2px,color:#fff
                    style D fill:#764ba2,stroke:#fff,stroke-width:2px,color:#fff
                    style E fill:#764ba2,stroke:#fff,stroke-width:2px,color:#fff
            </div>
        </div>

        <!-- Basic Concepts -->
        <div class="content-card rounded-2xl p-8 mb-8">
            <h2 class="section-title text-3xl font-bold mb-6 gradient-text">基本概念</h2>
            <p class="text-lg text-gray-700 mb-6">
                Nginx（发音为"engine x"）是一个高性能的开源的 Web 服务器软件，也可以用作反向代理服务器、负载均衡器和 HTTP 缓存等。
            </p>
            
            <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
                <div class="process-card">
                    <i class="fas fa-globe feature-icon text-3xl mb-3"></i>
                    <h3 class="text-xl font-bold mb-2">Web 服务器软件</h3>
                    <p class="text-gray-600">Nginx 是一个轻量级、高性能的 Web 服务器软件，用于提供静态内容、动态内容和服务端脚本等网页资源。</p>
                </div>
                
                <div class="process-card">
                    <i class="fas fa-exchange-alt feature-icon text-3xl mb-3"></i>
                    <h3 class="text-xl font-bold mb-2">反向代理服务器</h3>
                    <p class="text-gray-600">Nginx 可以作为反向代理服务器，接收客户端请求，并将请求转发到内部的后端服务器上。</p>
                </div>
                
                <div class="process-card">
                    <i class="fas fa-balance-scale feature-icon text-3xl mb-3"></i>
                    <h3 class="text-xl font-bold mb-2">负载均衡器</h3>
                    <p class="text-gray-600">具有强大的负载均衡功能，可以根据不同的负载均衡算法将请求分发到多个后端服务器上。</p>
                </div>
                
                <div class="process-card">
                    <i class="fas fa-database feature-icon text-3xl mb-3"></i>
                    <h3 class="text-xl font-bold mb-2">HTTP 缓存</h3>
                    <p class="text-gray-600">可以作为 HTTP 缓存服务器，缓存静态文件、动态页面和 API 请求等，提高网站的访问速度。</p>
                </div>
            </div>
        </div>

        <!-- Single Process Model -->
        <div class="content-card rounded-2xl p-8 mb-8">
            <h2 class="section-title text-3xl font-bold mb-6 gradient-text">单进程模型</h2>
            <p class="text-lg text-gray-700 mb-6">
                Nginx 最基本的进程模型是单进程单线程模型，也称为 Worker Process 模型。在这种模型下，Nginx 只有一个主进程，负责管理所有的网络连接和请求响应。
            </p>
            
            <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
                <div class="bg-green-50 rounded-lg p-6">
                    <h3 class="text-xl font-bold mb-4 text-green-700">
                        <i class="fas fa-check-circle mr-2"></i>优势
                    </h3>
                    <ul class="space-y-2 text-gray-700">
                        <li class="list-item">简单高效：设计简单，实现容易，资源消耗少</li>
                        <li class="list-item">低内存消耗：只有一个进程运行，内存占用小</li>
                        <li class="list-item">避免锁竞争：不存在多线程间的锁竞争问题</li>
                    </ul>
                </div>
                
                <div class="bg-red-50 rounded-lg p-6">
                    <h3 class="text-xl font-bold mb-4 text-red-700">
                        <i class="fas fa-times-circle mr-2"></i>劣势
                    </h3>
                    <ul class="space-y-2 text-gray-700">
                        <li class="list-item">并发连接受限：无法充分利用多核 CPU</li>
                        <li class="list-item">阻塞操作影响性能：一个阻塞操作会影响整个进程</li>
                        <li class="list-item">处理复杂请求效率低：不适合处理复杂的业务逻辑</li>
                    </ul>
                </div>
            </div>
        </div>

        <!-- Multi-Process Model -->
        <div class="content-card rounded-2xl p-8 mb-8">
            <h2 class="section-title text-3xl font-bold mb-6 gradient-text">多进程模型</h2>
            <p class="text-lg text-gray-700 mb-6">
                Nginx 的多进程模型通过 Master 进程和多个 Worker 进程的组合实现了高性能和高并发的请求处理。Master 进程负责管理 Worker 进程的创建和销毁，而 Worker 进程采用事件驱动和非阻塞 I/O 的方式处理请求。
            </p>
            
            <div class="grid grid-cols-1 md:grid-cols-2 gap-8">
                <div class="bg-gradient-to-br from-purple-50 to-pink-50 rounded-xl p-6">
                    <div class="flex items-center mb-4">
                        <i class="fas fa-crown text-3xl text-purple-600 mr-3"></i>
                        <h3 class="text-2xl font-bold text-purple-800">Master 进程</h3>
                    </div>
                    <p class="text-gray-700 mb-4">
                        Master 进程是 Nginx 的控制进程，负责管理 Worker 进程的创建、销毁和信号处理等。它通常运行在前台，并负责读取配置文件、绑定端口等初始化工作。
                    </p>
                    <ul class="space-y-2 text-gray-700">
                        <li class="list-item">监控 Worker 进程运行状态</li>
                        <li class="list-item">自动重启异常退出的 Worker 进程</li>
                        <li class="list-item">处理配置文件的重新加载</li>
                    </ul>
                </div>
                
                <div class="bg